GDB 调试命令 | 您所在的位置:网站首页 › gdb 函数的返回值 › GDB 调试命令 |
常用
break b 设置断点。 run r 开始运行程序。运行到第一个断点位置,如果没有断点就直接运行结束。 next n 执行当前行。如果当前行包含函数调用,不会进入函数。 step s 执行当前行。如果当前行包含函数调用,则进入函数,执行函数体第一条语句。注意,如果函数是库函数或者第三方提供的函数,由于没有源代码,也无法进入函数体。 print p 显示变量或表达式的值。 continue c 继续运行程序,直到下一个断点或者程序结束。 set var name = value 设置变量的值。 quit q 退出gdb环境。 finish fin 跳出当前函数 (gdb) list/l 行号或函数名 //列出源码 (gdb) l 30 25 int* pa = new int[10]; 26 memset(pa, 10*sizeof(int), 0); 27 printf("pa[0]:%d, pa[-1]:%d\n", pa[0], *(pa-4)); 28 pa[1] = 1, pa[2]=2, pa[3]=3; 29 --pa; 30 printf("cur *pa:%d\n", *pa); 31 } 32 33 int main() 34 { (gdb) break 29 Breakpoint 2 at 0x4007be: file mem.cpp, line 29. 其他显示内容太多出现省略号时执行:set print elements 0,之后就会显示全部内容 backtrace/bt //查看函数调用栈帧 frame/f //选择栈帧,再查看局部变量 p *array@len //打印指针array指向地址的len长度的内容 print *(int*)p@10 //以int格式打印指针p指向地址中10长度的值 set var sum=0 //修改变量值 set args 设置主程序的参数 display/undisplay sum //每次停下显示变量的值/取消跟踪 delete breakpoints 2 //删除某个断点 disable/enable breakpoints 3 //禁用/启用某个断点 break 9 if sum != 0 //满足条件才激活断点 watch input[4] //设置观察点 x/7b input //打印存储器内容,b--每个字节一组,7--7组 disassemble/disas //反汇编当前函数或指定函数 si // 一条指令一条指令调试 而 s 是一行一行代码 thread apply bt all 调试core时查看所有线程堆栈 GDB时的x命令x/ x:examine的缩写 n、f、u是可选的参数。 n 是一个正整数,表示显示内存的长度也就是说从当前地址向后显示几个地址的内容。 (gdb) x/1 pa 0x602010: 0 (gdb) x/2 pa 0x602010: 0 1 (gdb) x/3 pa 0x602010: 0 1 2 (gdb) x/4 pa 0x602010: 0 1 2 3 f 表示显示的格式x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 (gdb) x/4d pa 0x602010: 0 1 2 3 (gdb) x/4x pa 0x602010: 0x00000000 0x00000001 0x00000002 0x00000003 (gdb) x/4u pa 0x602010: 0 1 2 3 (gdb) x/4o pa 0x602010: 0 01 02 03 (gdb) x/4t pa 0x602010: 00000000000000000000000000000000 00000000000000000000000000000001 00000000000000000000000000000010 00000000000000000000000000000011 u 表示从当前地址往后请求的字节数如果不指定的话,GDB默认是4个bytes。 u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。 当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。 (gdb) x/4dh pa 0x602010: 0 0 1 0 (gdb) x/16db pa 0x602010: 0 0 0 0 1 0 0 0 0x602018: 2 0 0 0 3 0 0 0 (gdb) x/16b pa 0x602010: 0 0 0 0 1 0 0 0 0x602018: 2 0 0 0 3 0 0 0 (gdb) x/16h pa 0x602010: 0 0 1 0 2 0 3 0 0x602020: 0 0 0 0 0 0 0 0 (gdb) x/16w pa 0x602010: 0 1 2 3 0x602020: 0 0 0 0 0x602030: 0 0 135121 0 0x602040: 0 0 0 0 |
CopyRight 2018-2019 实验室设备网 版权所有 |